iT邦幫忙

1

正向代理與反向代理

  • 分享至 

  • xImage
  •  

2023年的鐵人賽已經正式落幕,在鐵人賽的第一天我曾經分享過使用CDN的優勢是什麼。今天想來談談CDN背後的運作原理。而說到CDN就不得不說到反向代理,那什麼是反向代理呢?

維基百科這樣說:

反向代理(Reverse proxy)在電腦網路中是代理伺服器的一種。伺服器根據客戶端的請求,從其關聯的一組或多組後端伺服器(如Web伺服器)上取得資源,然後再將這些資源返回給客戶端,客戶端只會得知反向代理的IP位址,而不知道在代理伺服器後面的伺服器叢集的存在。

這些文字對於有底子的工程師來說可以無痛閱讀,但回想當初剛轉職科技業的我看了三天三夜…依然沒明白它在說什麼。所以為了更好的去消化理解,我只好帶入一些生活化的例子來幫助記憶什麼是反向代理,而正向代理又是什麼?

簡單來說,提出需求的那方稱為客戶端
而真正回應需求的叫做伺服器端
所以當我用手機在瀏覽器上面搜尋資料時,我的手機就變成了客戶端,而網路會根據我搜尋的資料找到提供資源的伺服器端,然後伺服器端會回應我的需求。

正向代理(Forward Proxy)

這邊的代理指的是代理伺服器,用個淺顯易懂的例子來說就是幫我們跑腿的代辦人。
假設我在開發部門,我朋友和我心儀對象同在業務部。
辦公室的座位如下:
我 | 朋友 | 心儀對象
我比較害羞,想要寫情書給心儀對象但是又不想要被他知道是我寫的,於是我將情書拿給朋友,朋友再傳給心儀對象,朋友代理了我傳遞訊息,朋友就是正向代理。
然後心儀對象以為情書是朋友寫的所以愛上朋友,徒留我一身傷悲.../images/emoticon/emoticon02.gif
https://ithelp.ithome.com.tw/upload/images/20231017/20160839qrkVVxxxCf.png

正向代理的用途:

1. 突破因距離太遠的溝通限制

我跟心儀對象距離太遠不能直接進行溝通,但因為有正向代理所以能夠突破限制跟他傳遞情書。
(用戶想要訪問某國外網站,但該網站有區域限制無法直接在國內訪問,這時我們可以訪問代理伺服器,通過代理伺服器轉發請求。)

2. 隱藏客戶端真實IP

心儀對象不會知道是誰寫情書給他。
(伺服器不會知道用戶的真實IP,只能知道正向代理伺服器的IP。)

3. 提升訪問速度

朋友會模仿心儀對象的筆跡,如果我老是傳一樣的情書內容給心儀對象,且每次得到的答覆都是一樣時,朋友就會直接模仿心儀對象的筆跡和口吻“你人真好”回覆給我,節省傳給心儀對象和等待他回覆的時間。
(代理端會有緩存機制,如果需求回應已經存在於緩存中,代理伺服器將會直接回應給客戶端。)

反向代理(Reverse Proxy)

假設身為租客的我在找房子,我以為接觸到的是房東,但對方其實並非房東本人而是二房東,二房東幫助真正的房東處理租房事宜,二房東就是反向代理。
然後真正的房東其實是可怕的張小姐。/images/emoticon/emoticon04.gif
客戶端(租客)發送請求到反向代理伺服器(二房東),反向代理伺服器再把請求轉發給伺服器(房東),再把執行結果返回給客戶端(租客)。
https://ithelp.ithome.com.tw/upload/images/20231017/20160839caLhvvxBzw.png

反向代理的用途:

1. 隱藏伺服器真實IP

我不知道房東的真實身份。
(用戶不會知道伺服器的IP,只能知道反向代理伺服器的IP。)

2. 負載均衡

二房東知道房東本人很忙,所以找房東的老公幫忙處理租房事宜。
(可以根據所有伺服器的負載情況,將客戶端的請求分發到不同的伺服器上,避免單一伺服器的負載量過大。)

3. 資安控管

二房東可以保護房東的安全不被外部攻擊。
(可以作為應用層防火牆,提供DDoS防護。)

4. 提升訪問速度

二房東有房屋的相關資訊和鑰匙,可以直接帶租客去看房,而不必等待很忙的房東排出時間。
(反向代理伺服器可以緩存靜態內容和加速動態內容,提高訪問速度。)

正向代理與反向代理的差異?

簡而言之,兩者都能提高訪問速度、兩者都能保護真實的另一端。
差別在於:

  • 正向代理是代理客戶端,幫助客戶端訪問無法直接訪問的資源。
  • 反向代理是代理伺服器端,幫助伺服器端坐負載均衡和安全防護。

希望這篇可以幫助一些看文件看到快崩潰的新手工程師。/images/emoticon/emoticon29.gif


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言